# -*- coding: utf-8 -*-
"""
Created on Fri Jun 13 10:47:30 2025

@author: 15027
"""
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

# 加载数据集
data = pd.read_csv('diabetes.csv')

# 查看数据集的基本信息
print("数据集基本信息：")
print(data.info())
print("\n数据集描述性统计：")
print(data.describe())

# 数据分布分析
plt.figure(figsize=(12, 8))
sns.histplot(data['Outcome'], bins=2, kde=False, color='blue')
plt.title('Outcome Distribution')
plt.xlabel('Outcome')
plt.ylabel('Frequency')
plt.show()

# 变量关系分析
# 绘制相关性热力图
plt.figure(figsize=(12, 8))
correlation_matrix = data.corr()
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm', linewidths=0.5)
plt.title('Correlation Matrix')
plt.show()

# 重要特征探索
# 以 'Glucose' 和 'Outcome' 为例
plt.figure(figsize=(12, 8))
sns.boxplot(x='Outcome', y='Glucose', data=data)
plt.title('Glucose vs Outcome')
plt.xlabel('Outcome')
plt.ylabel('Glucose')
plt.show()

# 绘制散点图矩阵
sns.pairplot(data, hue='Outcome', vars=['Glucose', 'BloodPressure', 'Insulin', 'BMI', 'Age'])
plt.show()

# 绘制特征与目标变量的关系
plt.figure(figsize=(12, 8))
sns.countplot(x='Outcome', data=data)
plt.title('Outcome Count')
plt.xlabel('Outcome')
plt.ylabel('Frequency')
plt.show()